package com.quick.im.common.util;


import com.quick.im.common.proto.Message;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageEncoder;

import java.util.List;

public class ProtobufEncoder extends MessageToMessageEncoder<Message> {

    @Override
    protected void encode(ChannelHandlerContext ctx, Message msg, List<Object> out) throws Exception {
        byte[] bytes = msg.toByteArray();  // 使用 Protobuf 4.x 的 toByteArray() 方法
        ByteBuf byteBuf = ctx.alloc().buffer(bytes.length);
        byteBuf.writeBytes(bytes);  // 将字节数组写入 ByteBuf
        out.add(byteBuf);  // 输出到消息队列
    }
}
